#include <bits/stdc++.h>
using namespace std;
#define ll long long

int jjpow(int, int);
int jjC(ll, ll);

const int N = 500010, MOD = 1e9 + 7;

ll n, h, u;
ll a[N];

void solve(){
    ll ans = 0;
    for(int i = n - 1; i >= 0; --i){
        if(h >= u){
            printf("%lld\n", ans);
            return;
        }
        h += a[i];
        ans ++;
    }
    if(h >= u){
        printf("%lld\n", ans);
        return;
    }
}

void init(){
    scanf("%lld%lld%lld", &n, &h, &u);
    for(int i = 0; i < n; ++i){
        scanf("%lld", &a[i]);
    }
    sort(a, a + n);
}

int main(){
    #ifndef ONLINE_JUDGE
        auto start_clock = clock();
        //freopen("input.txt","r",stdin);
//  freopen("output.txt","w",stdout);
    #endif
    
    init();
    solve();
    
    #ifndef ONLINE_JUDGE
        auto end_clock = clock();
        //cout<<"runtime: "<<end_clock - start_clock<<"ms"<<endl;
    #endif
    return 0;
}

int jjpow(int a, int b){
    if(b == 2)return (a * a)%MOD;
    if(b == 1)return a;
    int ret1 = a, ret2 = a;
    int cnt1 = log(b)/log(2);
    int cnt2 = b - pow(2, cnt1);
    ret1 = jjpow(a, cnt2);
    for(int i = 0; i < cnt1; ++i){
        ret2 = (ret2 * ret2)%MOD;
    }
    return (ret1 * ret2)%MOD;
}

int jjC(ll a, ll b){
    int ret = 1, tmp = 1;
    for(int i = a; i > a - b; --i){
        ret = (ret * i)%MOD;
    }
    for(int i = 2; i <= b; ++i){
        tmp = (tmp * i)%MOD;
    }
    printf("%d %d\n", ret, tmp);
    return ret/tmp;
}
